
boolean sentSmsAlarm = false; 


bool alarm(float currentTemp, float alarmTemp)
{
  DEBUG_PRINT(F("ALARMA !!\n"));

  playAlarmBuzz(currentTemp, alarmTemp);

  //OJO, NO ENVIAR UN SMS EN CADA CICLO DE DETECCIÓN. SOLO UNO POR CADA PASO
  //DE FRÍO A CALOR
  if (!sentSmsAlarm)
  {
    String smsTxt = "ELSIS:ALARMA TEMPERATURA. Actual: " + String(currentTemp, FLOAT_DECIMAL_PLACES) +  ". Alarma: " + String(alarmTemp, FLOAT_DECIMAL_PLACES);

    //Lo imprimo en el puerto serie para ver cómo queda.
    DEBUG_PRINT(F("SMS: \""));
    DEBUG_PRINT(smsTxt);
    DEBUG_PRINT(F("\"\n"));

    //------------------------------------------------------------------
    Setup mySetup;
    int count = mySetup.getPhoneNumberCount();
    for (int i = 0; i < count; i++)
    {
      char buffer[PHONE_NUMBER_BYTES + 1];
      mySetup.getPhoneNumberAtIndex(i, buffer); 
      lcd.clear();
      lcd.displayText(String("Enviando alarma"), buffer);

      DEBUG_PRINT(F("Enviando alarma al num tlf:"));
      DEBUG_PRINT(buffer);
      DEBUG_PRINT(F("\n"));

      // ---- SMS -----
      gprs.sendSms(buffer, smsTxt);
      // ---- LLAMADA PERDIDA -------
      //PARA PRUEBAS, MÁS BARATITO UNA LLAMADA PERDIDA QUE UN SMS :)
      //gprs.makeCall(buffer);

    }
    //------------------------------------------------------------------

    sentSmsAlarm = true; //para que no se envíe otra alarma en el siguiente loop con exceso de temperatura

  }
}

void playAlarmBuzz(float currentTemp, float alarmTemp)
{
  int excess = currentTemp - alarmTemp;
  int beeps =  2 * excess + 1; //le sumo uno, porque sino justo al saltar la alarma, la diferencia puede ser menor que un grado y no sonaría
  if (beeps > 5)
    beeps = 5; //Ponemos un tope de pitidos

  for(int i = 0; i < beeps; i++)
  {
    //Hago que pite más frecuente cuanto más exceso de temperatura
    int period = 700 - 100 * excess;
    if (period <70)
      period = 70;

    digitalWrite(buzzerPin,LOW);//Make some sound
    delay(period);
    digitalWrite(buzzerPin,HIGH);//Be quiet 
    delay(period);
  }
}


